.\" Copyright (C) 2022 Jens Axboe <axboe@kernel.dk>
.\"
.\" SPDX-License-Identifier: LGPL-2.0-or-later
.\"
.TH io_uring_free_buf_ring 3 "Mar 07, 2023" "liburing-2.4" "liburing Manual"
.SH NAME
io_uring_free_buf_ring \- register and free a buffer ring for provided buffers
.SH SYNOPSIS
.nf
.B #include <liburing.h>
.PP
.BI "int io_uring_free_buf_ring(struct io_uring *" ring ",
.BI "                           struct io_uring_buf_ring *" br ",
.BI "                           unsigned int " nentries ",
.BI "                           int " bgid ");"
.BI "
.fi
.SH DESCRIPTION
.PP
The
.BR io_uring_free_buf_ring (3)
function unregisters a previously registered shared buffer ring. The ring must
have heen previously returned from
.BR io_uring_setup_buf_ring (3) .

The
.I ring
argument must pointer to the ring for which the provided buffer ring is being
registered,
.I br
must point to a buffer ring previously returned by
.BR io_uring_setup_buf_ring (3) ,
.I nentries
is the number of entries requested in the buffer ring, and
.I bgid
is the buffer group ID that
.I br
was setup with.

Under the covers, this function uses
.BR io_uring_unregister_buf_ring (3)
to unregister the ring, and handles the freeing of the ring rather than
letting the application open code it.

Available since 5.19.

.SH RETURN VALUE
On success
.BR io_uring_free_buf_ring (3)
returns a pointer to the buffe ring. On failure it returns
.BR -errno .
.SH SEE ALSO
.BR io_uring_setup_buf_ring (3)
